from openai import OpenAI

client = OpenAI(
    api_key="your-key",
    base_url="your-url",
)

def get_quantity(image_url , description_word):
    prompt = f"请分析这张图片并根据描述词{description_word}回答一个数字。\
    如果描述词是一个可以计算出具体数量的词，如个数，只需回答具体数字；如果说描述词是程度，用0-1来衡量，保留一位小数，若毫不相干则用0，若十分符合则用1\
    注意，任何情况下，仅回答一个数字，不需要多回答任何一个文字，不需要解释你得到这个回答的原因。\
    例如：描述词是人，图片中有四个人，仅回答4即可\
    如果：描述词是混乱程度，图片中只有十分混乱，仅回答1.0即可\
    如果不太确认，如画面不清晰，无法判断等情况，仅回答-1即可  "
    try:
        # 调用通义千问 API
        response = client.chat.completions.create(
            model="qwen-vl-plus",
            messages=[
                {"role": "user", "content": [
                    {"type": "text", "text": prompt},
                    {"type": "image_url", "image_url": image_url}
                ]}
            ]
        )
        try:
            # 尝试将内容转换为浮点数
            print(response.choices[0].message.content)
            return float(response.choices[0].message.content)
        except (IndexError, ValueError, AttributeError):
            # IndexError: 若response.choices为空列表或越界
            # ValueError: 若内容不能转换为浮点数
            # AttributeError: 若response或message没有对应的属性
            return 0.0
    except Exception as e:
        print(f"请求出错: {e}")
